package cn.wolfcode.trip.base.domain;

import cn.wolfcode.trip.base.util.JSONUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
@JsonIgnoreProperties("handler")
public class Travel extends BaseDomain{

    public static final Integer STATE_REFUSE = -1; //拒绝
    public static final Integer STATE_TEMP = 0; //草稿
    public static final Integer STATE_WAIT = 1; //待审核
    public static final Integer STATE_RELEASE = 2; //审核通过

    private String title;//标题
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date travelTime;//旅游时间

    private String perExpends;///人均消费

    private Integer days;//旅游天数

    private Integer person ;//和谁去旅游,因为会涉及到空指针异常，转换json的时候，所以给个默认值把，没办法了

    private Browse browse; //主键关联,浏览次数

    public String getPersonName(){
        String msg = "一个人的旅行" ;
        if(person!=null){
            if(person==2){
                msg = "和父母" ;
            }else if(person==3){
                msg = "和朋友" ;
            }else if(person==4){
                msg = "和同事" ;
            }else if(person==5){
                msg = "和爱人" ;
            }else if(person==6){
                msg = "和驴友" ;
            }
        }
        return msg ;
    }

    private Date createTime;//游记的创建时间

    private Date releaseTime;//发布的时间

    private Boolean isPublic = false;//是否公开,设置默认值，如果前台没有勾选传递的是Null,那么这个是不合理的，所以就设置一个默认值

    private String coverUrl;//封面
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date lastUpdateTime;//最后的更新时间

    private Integer state = STATE_TEMP;//状态，拥有一些常量的信息

    private User author;//作者，关联的是user表

    private Region place;//旅游的区域，关联的是region表

    private Travelcontent travelcontent ;//主键关联的对象，每一篇游记的内容

    public String getStateName(){
        String msg = "" ;
        if(state==STATE_REFUSE){
            msg = "拒绝" ;
        }else if(state==STATE_TEMP){
            msg = "草稿" ;
        }else if(state==STATE_WAIT){
            msg = "待审核" ;
        }else if(state==STATE_RELEASE){
            msg = "审核通过" ;
        }
        return msg ;
    }

    public String getJson(){
        Map<String,Object> map = new HashMap<>();
        //将标题加进去
        map.put("title",title);//游记的标题
        map.put("coverUrl",coverUrl);//游记的封面
        map.put("id",id);//游记的ID
        return JSONUtil.toJSONString(map);
    }
}